#include <stdlib.h>
#include <stdio.h>
#include <math.h>

// allocation vecteur
void alloc_vect ( double * v, int size){
	
}

// calcule de la norme d'un vecteur
double vector_norm ( double * v, int size){
	int i = 0;
	double somme = 0.;
	
	for( i = 0; i < size; ++i){
		somme += (v[i] * v[i]);
	}
	return sqrt( somme);
}

// produit matrice vecteur

double *  mul_mat_vect ( double ** mat, double * v, int size){
	
	int i, j;
	double * result;	// la matrice resultante
	double somme;
	// on alloue l'espace pour la matrice

		result = malloc( size * sizeof(double));
		
	
	for(	i = 0; i < size; ++i){
		somme = 0.;
		for( j = 0; j < size; ++j){
			somme += mat[i][j] * v[j];
		}
		result[i] = somme;
	}
	
	return result;	
}

// division d'un vecteur sur un scalaire

double * div_vect_scal( double * v, int size, double alpha){
	int i;
	double * result = malloc(size * sizeof( double));

	for( i = 0; i < size; ++i){
		result[i] = (v[i] / alpha );
	}
	
	return result;
}

// produit vecteur vecteur 
double prod_vect_vect( double * v, double * u, int size){
	int i;
	double somme = 0.;
	
	for( i = 0; i < size; ++i){
		somme += ( v[i] * u[i]);
	}
	
	return somme;
}

// produit d'un vecteur par un scalaire

double * prod_vect_scal( double * v, int size, double alpha){
	int i;
	double * result = malloc(size * sizeof( double));

	for( i = 0; i < size; ++i){
		result[i] = (v[i] * alpha);
	}
	
	return result;
}


// soustraction vecteur vecteur 
double * sous_vect_vect( double * v, double * u, int size){
	int i;
	double * result = malloc(size * sizeof( double));
	
	for( i = 0; i < size; ++i){
		result[i] = v[i] - u[i];
	}
	
	return result;
}




